home *** CD-ROM | disk | FTP | other *** search
/ The Very Best of Atari Inside / The Very Best of Atari Inside 1.iso / mint / mntinc25 / curses.h < prev    next >
C/C++ Source or Header  |  1992-10-03  |  9KB  |  296 lines

  1. /*
  2.  * Copyright (c) 1981 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that the above copyright notice and this paragraph are
  7.  * duplicated in all such forms and that any documentation,
  8.  * advertising materials, and other materials related to such
  9.  * distribution and use acknowledge that the software was developed
  10.  * by the University of California, Berkeley.  The name of the
  11.  * University may not be used to endorse or promote products derived
  12.  * from this software without specific prior written permission.
  13.  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
  14.  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
  15.  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  16.  *
  17.  *    @(#)curses.h    5.4 (Berkeley) 6/30/88
  18.  */
  19.  
  20. # ifndef WINDOW
  21.  
  22. # include    <stdio.h>
  23. # include    <sgtty.h>
  24. # include    <string.h>
  25.  
  26. #ifdef atarist
  27. #  include <memory.h>
  28. #endif
  29.  
  30. #ifndef _COMPILER_H
  31. #  include <compiler.h>
  32. #endif
  33.  
  34. #ifdef __STDC__
  35. #include <stddef.h>
  36. #endif
  37.  
  38. #include <termcap.h>
  39.  
  40. #ifdef __cplusplus
  41. extern "C" {
  42. #endif
  43.  
  44. # define    bool    char
  45. # define    reg    register
  46.  
  47. #ifndef TRUE
  48. # define    TRUE    (1)
  49. # define    FALSE    (0)
  50. #endif
  51. # define    ERR    (0)
  52. # define    OK    (1)
  53.  
  54. # define    _ENDLINE    001
  55. # define    _FULLWIN    002
  56. # define    _SCROLLWIN    004
  57. # define    _FLUSH        010
  58. # define    _FULLLINE    020
  59. # define    _IDLINE        040
  60. # define    _STANDOUT    0200
  61. # define    _NOCHANGE    -1
  62.  
  63. #ifndef DEBUG
  64. #define _putchar    fputc
  65. #else
  66. #define _fputchar    _putchar
  67. #endif
  68.  
  69. # define    _puts(s)    tputs(s, 0, _fputchar)
  70.  
  71. typedef    struct sgttyb    SGTTY;
  72.  
  73. /*
  74.  * Capabilities from termcap
  75.  */
  76.  
  77. #ifdef HZ
  78. #undef HZ    /* in case they included sys/param.h */
  79. #endif
  80.  
  81. extern bool     AM, BS, CA, DA, DB, EO, HC, HZ, IN, MI, MS, NC, NS, OS, UL,
  82.         XB, XN, XT, XS, XX;
  83. extern char    *AL, *BC, *BT, *CD, *CE, *CL, *CM, *CR, *CS, *DC, *DL,
  84.         *DM, *DO, *ED, *EI, *K0, *K1, *K2, *K3, *K4, *K5, *K6,
  85.         *K7, *K8, *K9, *HO, *IC, *IM, *IP, *KD, *KE, *KH, *KL,
  86.         *KR, *KS, *KU, *LL, *MA, *ND, *NL, *RC, *SC, *SE, *SF,
  87.         *SO, *SR, *TA, *TE, *TI, *UC, *UE, *UP, *US, *VB, *VS,
  88.         *VE, *AL_PARM, *DL_PARM, *UP_PARM, *DOWN_PARM,
  89.         *LEFT_PARM, *RIGHT_PARM;
  90. extern char    PC;
  91.  
  92. /*
  93.  * From the tty modes...
  94.  */
  95.  
  96. extern bool    GT, NONL, UPPERCASE, normtty, _pfast;
  97.  
  98. struct _win_st {
  99.     short        _cury, _curx;
  100.     short        _maxy, _maxx;
  101.     short        _begy, _begx;
  102.     short        _flags;
  103.     short        _ch_off;
  104.     bool        _clear;
  105.     bool        _leave;
  106.     bool        _scroll;
  107.     char        **_y;
  108.     short        *_firstch;
  109.     short        *_lastch;
  110.     struct _win_st    *_nextp, *_orig;
  111. };
  112.  
  113. # define    WINDOW    struct _win_st
  114.  
  115. extern bool    My_term, _echoit, _rawmode, _endwin;
  116.  
  117. extern char    *Def_term, ttytype[];
  118.  
  119. extern int    LINES, COLS, _tty_ch, _res_flg;
  120.  
  121. extern SGTTY    _tty;
  122.  
  123. extern WINDOW    *stdscr, *curscr;
  124.  
  125. /*
  126.  *    Define VOID to stop lint from generating "null effect"
  127.  * comments.
  128.  */
  129. # ifdef lint
  130. int    __void__;
  131. # define    VOID(x)    (__void__ = (int) (x))
  132. # else
  133. # define    VOID(x)    (x)
  134. # endif
  135.  
  136. /*
  137.  * psuedo functions for standard screen
  138.  */
  139. # define    addch(ch)    VOID(waddch(stdscr, ch))
  140. # define    getch()        VOID(wgetch(stdscr))
  141. # define    addbytes(da,co)    VOID(waddbytes(stdscr, da,co))
  142. # define    addstr(str)    VOID(waddbytes(stdscr, str, (int)strlen(str)))
  143. # define    getstr(str)    VOID(wgetstr(stdscr, str))
  144. # define    move(y, x)    VOID(wmove(stdscr, y, x))
  145. # define    clear()        VOID(wclear(stdscr))
  146. # define    erase()        VOID(werase(stdscr))
  147. # define    clrtobot()    VOID(wclrtobot(stdscr))
  148. # define    clrtoeol()    VOID(wclrtoeol(stdscr))
  149. # define    insertln()    VOID(winsertln(stdscr))
  150. # define    deleteln()    VOID(wdeleteln(stdscr))
  151. # define    refresh()    VOID(wrefresh(stdscr))
  152. # define    inch()        VOID(winch(stdscr))
  153. # define    insch(c)    VOID(winsch(stdscr,c))
  154. # define    delch()        VOID(wdelch(stdscr))
  155. # define    standout()    VOID(wstandout(stdscr))
  156. # define    standend()    VOID(wstandend(stdscr))
  157.  
  158. /*
  159.  * mv functions
  160.  */
  161. #define    mvwaddch(win,y,x,ch)    VOID(wmove(win,y,x)==ERR?ERR:waddch(win,ch))
  162. #define    mvwgetch(win,y,x)    VOID(wmove(win,y,x)==ERR?ERR:wgetch(win))
  163. #define    mvwaddbytes(win,y,x,da,co) \
  164.         VOID(wmove(win,y,x)==ERR?ERR:waddbytes(win,da,co))
  165. #define    mvwaddstr(win,y,x,str) \
  166.         VOID(wmove(win,y,x)==ERR?ERR:waddbytes(win,str,(int)strlen(str)))
  167. #define mvwgetstr(win,y,x,str)  VOID(wmove(win,y,x)==ERR?ERR:wgetstr(win,str))
  168. #define    mvwinch(win,y,x)    VOID(wmove(win,y,x) == ERR ? ERR : winch(win))
  169. #define    mvwdelch(win,y,x)    VOID(wmove(win,y,x) == ERR ? ERR : wdelch(win))
  170. #define    mvwinsch(win,y,x,c)    VOID(wmove(win,y,x) == ERR ? ERR:winsch(win,c))
  171. #define    mvaddch(y,x,ch)        mvwaddch(stdscr,y,x,ch)
  172. #define    mvgetch(y,x)        mvwgetch(stdscr,y,x)
  173. #define    mvaddbytes(y,x,da,co)    mvwaddbytes(stdscr,y,x,da,co)
  174. #define    mvaddstr(y,x,str)    mvwaddstr(stdscr,y,x,str)
  175. #define mvgetstr(y,x,str)       mvwgetstr(stdscr,y,x,str)
  176. #define    mvinch(y,x)        mvwinch(stdscr,y,x)
  177. #define    mvdelch(y,x)        mvwdelch(stdscr,y,x)
  178. #define    mvinsch(y,x,c)        mvwinsch(stdscr,y,x,c)
  179.  
  180. /*
  181.  * psuedo functions
  182.  */
  183.  
  184. #define    clearok(win,bf)     (win->_clear = bf)
  185. #define    leaveok(win,bf)     (win->_leave = bf)
  186. #define    scrollok(win,bf) (win->_scroll = bf)
  187. #define flushok(win,bf)     (bf ? (win->_flags |= _FLUSH):(win->_flags &= ~_FLUSH))
  188. #define    getyx(win,y,x)     y = win->_cury, x = win->_curx
  189. #define    winch(win)     (win->_y[win->_cury][win->_curx] & 0177)
  190.  
  191. #define raw()     (_tty.sg_flags|=RAW, _pfast=_rawmode=TRUE, stty(_tty_ch,&_tty))
  192. #define noraw()     (_tty.sg_flags&=~RAW,_rawmode=FALSE,_pfast=!(_tty.sg_flags&CRMOD),stty(_tty_ch,&_tty))
  193. #define cbreak() (_tty.sg_flags |= CBREAK, _rawmode = TRUE, stty(_tty_ch,&_tty))
  194. #define nocbreak() (_tty.sg_flags &= ~CBREAK,_rawmode=FALSE,stty(_tty_ch,&_tty))
  195. #define crmode() cbreak()    /* backwards compatability */
  196. #define nocrmode() nocbreak()    /* backwards compatability */
  197. #define echo()     (_tty.sg_flags |= ECHO, _echoit = TRUE, stty(_tty_ch, &_tty))
  198. #define noecho() (_tty.sg_flags &= ~ECHO, _echoit = FALSE, stty(_tty_ch, &_tty))
  199. #define nl()     (_tty.sg_flags |= CRMOD,_pfast = _rawmode,stty(_tty_ch, &_tty))
  200. #define nonl()     (_tty.sg_flags &= ~CRMOD, _pfast = TRUE, stty(_tty_ch, &_tty))
  201. #define    savetty() ((void) gtty(_tty_ch, &_tty), _res_flg = _tty.sg_flags)
  202. #define    resetty() (_tty.sg_flags = _res_flg, (void) stty(_tty_ch, &_tty))
  203.  
  204. #define    erasechar()    (_tty.sg_erase)
  205. #define    killchar()    (_tty.sg_kill)
  206. #define baudrate()    (_tty.sg_ospeed)
  207.  
  208. __EXTERN int        waddbytes __PROTO((WINDOW *, char *, int));
  209. __EXTERN void        _id_subwins __PROTO((WINDOW *));
  210. __EXTERN void        _set_subwin_ __PROTO((WINDOW *, WINDOW *));
  211. __EXTERN int         _sprintw __PROTO((WINDOW *, char *, char *));
  212. __EXTERN int         _sscans __PROTO((WINDOW *, char *, ...));
  213. __EXTERN void        _swflags_ __PROTO((WINDOW *));
  214.  
  215. __EXTERN void        box __PROTO((WINDOW *, int, int));
  216.  
  217. __EXTERN void        delwin __PROTO((WINDOW *));
  218.  
  219. __EXTERN void        endwin __PROTO((void));
  220.  
  221. __EXTERN void        fgoto __PROTO((void));
  222. __EXTERN char *        fullname __PROTO((char *, char *));
  223.  
  224. __EXTERN char *        getcap __PROTO((char *));
  225. __EXTERN void        gettmode __PROTO((void));
  226.  
  227. __EXTERN void        idlok __PROTO((WINDOW *, int));
  228. __EXTERN WINDOW *    initscr __PROTO((void));
  229.  
  230. __EXTERN char *        longname __PROTO((char *, char *));
  231.  
  232. __EXTERN void        mvcur __PROTO((int, int, int, int));
  233.  
  234. __EXTERN int        mvprintw __PROTO((int, int, char *, ...));
  235. __EXTERN int         mvwprintw __PROTO((WINDOW *, int, int, char *, ...));
  236. __EXTERN int        mvscanw __PROTO((int, int, char *, ...));
  237. __EXTERN int        mvwscanw __PROTO((WINDOW *, int, int, char *, ...));
  238.  
  239. __EXTERN int        mvwin __PROTO((WINDOW *, int, int));
  240.  
  241. __EXTERN WINDOW *    newwin __PROTO((int, int, int, int));
  242.  
  243. __EXTERN void        overlay __PROTO((WINDOW *, WINDOW *));
  244. __EXTERN void        overwrite __PROTO((WINDOW *, WINDOW *));
  245.  
  246. __EXTERN int        printw __PROTO((char *, ...));
  247.  
  248. __EXTERN int        scanw __PROTO((char *, ...));
  249. __EXTERN int        scroll __PROTO((WINDOW *));
  250. __EXTERN int        setterm __PROTO((char *));
  251. __EXTERN WINDOW *    subwin __PROTO((WINDOW *, int, int, int, int));
  252.  
  253. __EXTERN int        tabcol __PROTO((int, int));
  254. __EXTERN void        touchline __PROTO((WINDOW *, int, int, int));
  255. __EXTERN void        touchoverlap __PROTO((WINDOW *, WINDOW *));
  256. __EXTERN void        touchwin __PROTO((WINDOW *));
  257. __EXTERN void        tstp __PROTO((void));
  258.  
  259. __EXTERN int        waddch __PROTO((WINDOW *, int));
  260. __EXTERN int        waddstr __PROTO((WINDOW *, char *));
  261. __EXTERN int        wclear __PROTO((WINDOW *));
  262. __EXTERN void        wclrtobot __PROTO((WINDOW *));
  263. __EXTERN void        wclrtoeol __PROTO((WINDOW *));
  264. __EXTERN int        wdelch __PROTO((WINDOW *));
  265. __EXTERN int        wdeleteln __PROTO((WINDOW *));
  266. __EXTERN void        werase __PROTO((WINDOW *));
  267. __EXTERN int        wgetch __PROTO((WINDOW *));
  268. __EXTERN int        wgetstr __PROTO((WINDOW *, char *));
  269. __EXTERN int        winsch __PROTO((WINDOW *, int));
  270. __EXTERN void        winsertln __PROTO((WINDOW *));
  271. __EXTERN int        wmove __PROTO((WINDOW *, int, int));
  272.  
  273. __EXTERN int        wprintw __PROTO((WINDOW *, char *, ...));
  274. __EXTERN int        wrefresh __PROTO((WINDOW *));
  275. __EXTERN int        wscanw __PROTO((WINDOW *, char *, ...));
  276. __EXTERN char *        wstandend __PROTO((WINDOW *));
  277. __EXTERN char *        wstandout __PROTO((WINDOW *));
  278.  
  279. __EXTERN void        zap __PROTO((void));
  280.  
  281. /*
  282.  * Used to be in unctrl.h.
  283.  */
  284. #if 0
  285. #define    unctrl(c)    _unctrl[(c) & 0177]
  286. extern char *_unctrl[];
  287. #else
  288. __EXTERN char *unctrl __PROTO((int c));
  289. #endif
  290.  
  291. #ifdef __cplusplus
  292. }
  293. #endif
  294.  
  295. #endif
  296.